Machines, Interprètes
نویسنده
چکیده
Ceci est la version 3 de la troisième partie du cours de lambda-calcul, datant du 02 juin 2014. La version 2 datait du 28 janvier 2011. La première version datait du 15 avril 2002. Merci à Hang Zhou et à Arthur Milchior. Aucune machine réelle n’exécute directement la relation de β-réduction du λcalcul, ou même d’un langage fonctionnel plus pratique comme Caml ou Haskell. Il est donc nécessaire de passer par un interprète ou un compilateur. Il existe de nombreuses techniques pour réaliser un interprète du λ-calcul, ou en général d’un langage fonctionnel. Nous commencerons par présenter les machines à réduction par nom, et en particulier la version due à Jean-Louis Krivine et les machines à réduction de graphes, fondées sur la logique combinatoire, en section 1. Nous verrons que la logique combinatoire a quelques défauts théoriques, que nous tenterons de réparer à l’aide des calculs à substitutions explicites, en section 2. Ces techniques ont l’avantage d’avoir une belle théorie, et de permettre la réalisation correcte de machines à réduction pour le λ-calcul complet. Ceci est notamment utile dans la réalisation d’environnements logiques d’ordre supérieur, comme Coq, où une composante de calcul est présente dans les formules elles-mêmes (cf. partie 2, arithmétique de Peano, logique et arithmétique d’ordres supérieurs). En revanche, ces calculs ont jusqu’ici été d’une utilité moindre dans la réalisation d’interprètes et de compilateurs pour des langages fonctionnels réalistes, où seule une stratégie incomplète — réduction faible par valeur en Caml par exemple — est souhaitée. On présentera des interprètes et des compilateurs pour un petit langage fonctionnel au-dessus du λ-calcul en section ??. Les problèmes particuliers posés par la gestion d’exceptions et les effets de bord nous feront examiner des stratégies de compilation fondées sur la passage de continuations en section ??. Ceci culminera sur la technique de compilation de Baker, qui généralise la notion de trampolines. 1 Logique combinatoire Le problème que nous cherchons à traiter dans ce chapitre est le suivant: nous souhaitons écrire un programme qui prend un λ-terme en entrée et retourne sa forme normale, si elle existe. Le premier point que nous devrons traiter est la représentation des λ-termes. Une idée est d’utiliser une structure d’arbre, correspondant au type Caml: type lambda_terme = VAR of string (* variables nommees *) | APPL of lambda_terme * lambda_terme (* applications *) | ABS of string * lambda_terme;; (* abstractions *) Ceci est cependant assez maladroit, comme le lecteur pourra s’en apercevoir s’il essaie d’écrire une fonction de réduction pour ce langage. Essayons de le faire: nous voulons écrire une fonction norm : lambda_terme -> lambda_terme qui normalise
منابع مشابه
A Comparative Study of Extreme Learning Machines and Support Vector Machines in Prediction of Sediment Transport in Open Channels
The limiting velocity in open channels to prevent long-term sedimentation is predicted in this paper using a powerful soft computing technique known as Extreme Learning Machines (ELM). The ELM is a single Layer Feed-forward Neural Network (SLFNN) with a high level of training speed. The dimensionless parameter of limiting velocity which is known as the densimetric Froude number (Fr) is predicte...
متن کاملSolving the Problem of Scheduling Unrelated Parallel Machines with Limited Access to Jobs
Nowadays, by successful application of on time production concept in other concepts like production management and storage, the need to complete the processing of jobs in their delivery time is considered a key issue in industrial environments. Unrelated parallel machines scheduling is a general mood of classic problems of parallel machines. In some of the applications of unrelated parallel mac...
متن کاملSolving the Problem of Scheduling Unrelated Parallel Machines with Limited Access to Jobs
Nowadays, by successful application of on time production concept in other concepts like production management and storage, the need to complete the processing of jobs in their delivery time is considered a key issue in industrial environments. Unrelated parallel machines scheduling is a general mood of classic problems of parallel machines. In some of the applications of unrelated parallel mac...
متن کاملNew Heuristic Algorithm for Flow Shop Scheduling with 3 Machines and 2 Robots Considering the Breakdown Interval of Machines and Robots Simultaneously
Scheduling is an important subject of production and operations management area. In flow-shop scheduling, the objective is to obtain a sequence of jobs which when processed in a fixed order of machines, will optimize some well defined criteria. The concept of transportation time is very important in scheduling. Transportation can be done by robots. In situations that robots are used to transpor...
متن کاملSome improvements in fuzzy turing machines
In this paper, we improve some previous definitions of fuzzy-type Turing machines to obtain degrees of accepting and rejecting in a computational manner. We apply a BFS-based search method and some level’s upper bounds to propose a computational process in calculating degrees of accepting and rejecting. Next, we introduce the class of Extended Fuzzy Turing Machines equipped with indeterminacy s...
متن کامل